package com.xyht.sca_s.student_manage_system.modules.appDynamic.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xyht.sca_s.student_manage_system.common.commonReturn.ResponseResult;
import com.xyht.sca_s.student_manage_system.modules.appDynamic.entity.AppApplicationData;
import com.xyht.sca_s.student_manage_system.modules.appDynamic.entity.req.*;

import javax.servlet.http.HttpServletResponse;
import java.util.concurrent.Future;

/**
 * <p>
 * 应用用户申请数据表：存放用户申请表数据 服务类
 * </p>
 *
 * @author XYHT
 * @since 2023-07-26
 */
public interface AppApplicationDataService extends IService<AppApplicationData> {
    ResponseResult cancelApplication(ApplicationCancelReq cancelReq, String userId);

    ResponseResult getApplicationList(Integer pageSize, Integer pageNum, Integer applyType, String appId, String userId);

    ResponseResult getApplicationDetail(String applicationId, String appId, String userId);

    ResponseResult allowApplication(ApplicationAllowReq allowReq, String userId);

    ResponseResult transmitApplication(ApplicationTransmitReq transmitReq, String userId);

    ResponseResult backApplication(ApplicationBackReq backReq, String userId);

    ResponseResult submitApplicationData(SubmitApplicationDataReq req, String userId);

    ResponseResult submitApplicationProcess(SubmitApplicationProcessReq req, String userId);

    ResponseResult selectAllAppApply(Integer pageNum, Integer pageSize, String appId, String applyUser, String searchStr);

    ResponseResult forceArchive(ApplicationBackReq backReq, String userId);

    Future<ResponseResult> exportAllApplyList(AppDynamicExportReq exportReq, HttpServletResponse response);

    ResponseResult getControlInfo(String appId);

    Future<ResponseResult> tableDownload(String applyId, HttpServletResponse response);

    ResponseResult forceExchange(ApplicationTransmitReq transmitReq);

    ResponseResult insteadAllow(ApplicationAllowReq allowReq, String userId);

    ResponseResult forcedReject(ApplicationBackReq backReq, String userId);

    ResponseResult deleteApplyData(String applyId);
}
